/**
* @project admin-go-api
* @name sysAdmin
* @descriptions 用户相关结构体
* @author 寒锋
* @date 2023-12-14 16:12:56
 */

package entity

import "admin-go-api/common/util"

const (
	AdminStatusNormal    = 1 // 账号正常
	AdminStatusForbidden = 2 // 账号禁用
)

// SysAdmin 用户模型对象
type SysAdmin struct {
	AdminId      uint       `gorm:"column:admin_id;autoIncrement;comment:'主键';primaryKey;NOT NULL" json:"admin_id"`      // ID
	PostId       uint       `gorm:"column:post_id;comment:'岗位id';NOT NULL;default:0" json:"post_id"`                     // 岗位id
	DeptId       int        `gorm:"column:dept_id;comment:'部门id';NOT NULL;default:0" json:"dept_id"`                     // 部门id
	Username     string     `gorm:"column:username;varchar(64);comment:'用户账号';NOT NULL;default:''" json:"username"`    // 用户账号
	Password     string     `gorm:"column:password;varchar(64);comment:'密码';NOT NULL;default:''" json:"password"`        // 密码
	Nickname     string     `gorm:"column:nickname;varchar(64);comment:'昵称';default:''" json:"nickname"`                 // 昵称
	Status       int        `gorm:"column:status;default:1;comment:'帐号启用状态：1->启用,2->禁用';NOT NULL" json:"status"` // 帐号启用状态：1->启用,2->禁用
	ProfilePhoto string     `gorm:"column:profile_photo;varchar(300);comment:'头像';default:''" json:"profile_photo"`      // 头像
	Email        string     `gorm:"column:email;varchar(64);comment:'邮箱';default:''" json:"email"`                       // 邮箱
	Phone        string     `gorm:"column:phone;varchar(64);comment:'电话';default:''" json:"phone"`                       // 电话
	Note         string     `gorm:"column:note;varchar(500);comment:'备注';default:''" json:"note"`                        // 备注
	CreateTime   util.HTime `gorm:"column:create_time;comment:'创建时间';NOT NULL" json:"create_time"`                     // 创建时间
}

func (SysAdmin) TableName() string {
	return "sys_admin"
}

// StoreSysAdminDto 添加管理员参数
type StoreSysAdminDto struct {
	PostId   uint   `validate:"required" json:"post_id"`  // 岗位id
	RoleId   uint   `validate:"required" json:"role_id"`  // 角色id
	DeptId   int    `validate:"required" json:"dept_id"`  // 部门id
	Username string `validate:"required" json:"username"` // 用户账号
	Password string `validate:"required" json:"password"` // 密码
	Nickname string `validate:"required" json:"nickname"` // 昵称
	Phone    string `validate:"required" json:"phone"`    // 电话
	Email    string `validate:"required" json:"email"`    // 邮箱
	Note     string `json:"note"`                         // 备注
	Status   int    `validate:"required" json:"status"`   // 帐号启用状态：1->启用,2->禁用
}

// SysAdminInfo 管理员详情视图
type SysAdminInfo struct {
	AdminId  uint   `json:"admin_id"`
	Username string `json:"username"` // 用户账号
	Nickname string `json:"nickname"` // 昵称
	Status   int    `json:"status"`   // 帐号启用状态：1->启用,2->禁用
	PostId   uint   `json:"post_id"`  // 岗位id
	RoleId   uint   `json:"role_id"`  // 角色id
	DeptId   int    `json:"dept_id"`  // 部门id
	Phone    string `json:"phone"`    // 电话
	Email    string `json:"email"`    // 邮箱
	Note     string `json:"note"`     // 备注
}

// UpdateSysAdminDto 修改管理员参数
type UpdateSysAdminDto struct {
	AdminId  uint   `json:"admin_id"` //
	PostId   uint   `json:"post_id"`  // 岗位id
	RoleId   uint   `json:"role_id"`  // 角色id
	DeptId   int    `json:"dept_id"`  // 部门id
	Username string `json:"username"` // 用户账号
	Nickname string `json:"nickname"` // 昵称
	Phone    string `json:"phone"`    // 电话
	Email    string `json:"email"`    // 邮箱
	Note     string `json:"note"`     // 备注
	Status   int    `json:"status"`   // 帐号启用状态：1->启用,2->禁用
}

// UpdateSysAdminStateDto 修改管理员状态参数
type UpdateSysAdminStateDto struct {
	AdminId uint `json:"admin_id"` //
	Status  int  `json:"status"`   // 帐号启用状态：1->启用,2->禁用
}

// SysAdminIdDto 管理员Id参数
type SysAdminIdDto struct {
	AdminId uint `json:"admin_id"`
}

// ResetSysAdminPasswordDto 重置密码参数
type ResetSysAdminPasswordDto struct {
	AdminId  uint   `json:"admin_id"`
	Password string `json:"password"`
}

// UpdatePersonalDto 修改个人信息参数
type UpdatePersonalDto struct {
	AdminId      uint   `json:"admin_id"`
	ProfilePhoto string `json:"profile_photo"`                // 头像
	Username     string `validate:"required" json:"username"` // 用户账号
	Nickname     string `validate:"required" json:"nickname"` // 昵称
	Phone        string `validate:"required" json:"phone"`    // 电话
	Email        string `validate:"required" json:"email"`    // 邮箱
	Note         string `validate:"required" json:"note"`     // 备注
}

// UpdatePersonalPasswordDto 修改个人密码
type UpdatePersonalPasswordDto struct {
	AdminId       uint   `validate:"required" json:"admin_id"`
	Password      string `validate:"required" json:"password"`      // 旧密码
	NewPassword   string `validate:"required" json:"newPassword"`   // 新密码
	ResetPassword string `validate:"required" json:"resetPassword"` // 重复密码
}

// SysAdminVo 用户列表视图
type SysAdminVo struct {
	AdminId      uint       `json:"admin_id"`
	Username     string     `json:"username"`      // 用户账号
	Nickname     string     `json:"nickname"`      // 昵称
	Status       int        `json:"status"`        // 帐号启用状态：1->启用,2->禁用
	PostId       uint       `json:"post_id"`       // 岗位id
	RoleId       uint       `json:"role_id"`       // 角色id
	DeptId       int        `json:"dept_id"`       // 部门id
	PostName     string     `json:"post_name"`     // 岗位名称
	RoleName     string     `json:"role_name"`     // 角色名称
	DeptName     string     `json:"dept_name"`     // 部门名称
	ProfilePhoto string     `json:"profile_photo"` // 头像
	Phone        string     `json:"phone"`         // 电话
	Email        string     `json:"email"`         // 邮箱
	Note         string     `json:"note"`          // 备注
	CreateTime   util.HTime `json:"create_time"`   // 创建时间
}
